home *** CD-ROM | disk | FTP | other *** search
/ Scene 96 / Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso / misc / coding / one_scrs / asm / m1.asm < prev    next >
Encoding:
Assembly Source File  |  1996-04-25  |  16.2 KB  |  382 lines

  1.     .386p
  2.     .model flat, c
  3.     locals
  4. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  5. ; EQUATES
  6. ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  7.                 .code
  8.                 extrn pic2:dword
  9.                 extrn pic1:dword
  10. Frames          = 10
  11. FramesNum       = 3 ;10                    ; Fazisok szama
  12. PageDist        = 100; 550 ;DeltaDist*FramesNum   ; Lapok tavolsaga
  13. DefDist         = PageDist*5            ; A legnagyobb tavolsag
  14. DeltaDist       = 1; 55                    ; A kozeledes sebessege
  15. PageRot         = 0 ;16                    ; Lapok elforgatasa
  16. DeltaRot        = 0 ;1                     ; Forgasi sebesseg
  17. Origo_X         = 32768
  18. SzinMelyseg     db      0
  19.  
  20. Random          macro
  21.                 mov esi, 00046ch
  22.                 add ax, [esi]
  23.                 add ax, [RandSeed]
  24.                 add ax, [esi]
  25.                 mov [RandSeed], ax
  26. endm
  27.  
  28. inp             macro port
  29.                 mov dx, port
  30.                 in al, dx
  31. endm
  32.  
  33. outp            macro port, value
  34.                 mov dx, port
  35.                 mov al, value
  36.                 out dx, al
  37. endm
  38.  
  39. outpw           macro port, value
  40.                 mov dx, port
  41.                 mov ax, value
  42.                 out dx, ax
  43. endm
  44.  
  45. SXL_DX_1        macro
  46.                 db 0c1h
  47.                 db 0e2h
  48.                 db 001h
  49. endm
  50.  
  51. ;«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»
  52. ; DATA
  53. ;«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»«∙»
  54. DDX1            dw 0
  55. DDY1            dw 0
  56. DDX2            dw 0
  57. DDY2            dw 0
  58. I               dw ?
  59. J               dw ?
  60. Rot5            db ?                    ; Aktualis szog
  61. Rot4            db ?                    ; Aktualis szog
  62. Rot3            db ?                    ; A Rotx byte-oknak lenyeges a sor-
  63. Rot2            db ?                    ; rendje, mert dword-kent is vannak
  64. Rot1            db ?                    ; egyutt kezelve!
  65. Dist1           dw ?                    ; Aktualis tavolsag
  66. Dist2           dw ?                    ;
  67. Dist3           dw ?                    ;
  68. Dist4           dw ?                    ;
  69. Dist5           dw ?                    ;
  70. FramesCount     dw 0                    ; A fazisok szama
  71. Origo_Y         dw 20000 ;32768                ; Lasd a neveben!
  72. RandSeed        dw 091ch
  73. Filler          db 000h                 ; A hatter szine, ilyennel nem rajzol
  74.                                         ; illetve, ezzel tolti fel a hianyzo
  75.                                         ; reszt
  76. ;≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
  77. ; CODE
  78. ;≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
  79. MakeMath        macro szog, tavolsag
  80.                 ; ddx1 := (CosTable[rot]*dist) div 256;
  81.                 ; ddy1 := (SinTable[rot]*dist) div 256;
  82.                 ; ddx2 := (Cos2Table[rot]*dist) div 256;
  83.                 ; ddy2 := (Sin2Table[rot]*dist) div 256;
  84.                 ; i := x-ddx1*160-ddx2*50; j := y-ddy1*160-ddy2*50;
  85.                 mov cx, Origo_X
  86.                 mov di, [Origo_Y]
  87.                 xor ebx, ebx
  88.                 mov bl, szog            ; rot -> bx
  89.                 mov ax, word ptr Cosinus1[ebx*2]      ; cos1(rot) -> ax
  90. ;mov tavolsag,ax
  91.                 imul tavolsag           ; cos1(rot)*scale
  92.                 shld dx, ax, 8
  93.                 mov [DDX1], dx          ; cos1(rot)*scale/256 -> ddx1
  94.                 sal dx, 4
  95.                 sub cx, dx              ; i = i-32*ddx1
  96.                 sal dx, 2
  97.                 sub cx, dx              ; i = i-128*ddx1
  98.                 mov ax, word ptr Sinus1[ebx*2]      ; sin1(rot) -> ax
  99. ;imul ax
  100. ;mov I,ax
  101.                 imul tavolsag           ; sin1(rot)*scale
  102.                 shld dx, ax, 8
  103.                 mov [DDY1], dx          ; sin1(rot)*scale/256 -> ddy1
  104.                 sal dx, 4               ; i = i-32*ddy1
  105.                 sub di, dx
  106.                 sal dx, 2               ; i = i-128*ddy1
  107.                 sub di, dx
  108.                 mov ax, word ptr Cosinus2[ebx*2]      ; cos2(rot) -> ax
  109.                 imul tavolsag           ; cos2(rot)*scale
  110.                 shld dx, ax, 8
  111.                 mov [DDX2], dx          ; cos2(rot)*scale/256 -> ddx2
  112.                 SXL_DX_1
  113.                 sub cx, dx              ; i = i-4*ddx2
  114.                 sal dx, 3
  115.                 sub cx, dx              ; i = i-32*ddx2
  116.                 SXL_DX_1
  117.                 sub cx, dx              ; i = i-64*ddx2
  118.                 mov ax, word ptr Sinus2[ebx*2]      ; sin2(rot) -> ax
  119.                 imul tavolsag           ; sin2(rot)*scale
  120. ;                imul ax
  121.                 shld dx, ax, 8
  122.                 mov [DDY2], dx          ; sin2(rot)*scale/256 -> ddy2
  123.  
  124. ;                SXL_DX_1
  125.  
  126.                 sub di, dx              ; j = j-4*ddx2
  127.                 sal dx, 3
  128.                 sub di, dx              ; j = j-32*ddx2
  129.                 SXL_DX_1
  130.                 sub di, dx              ; j = j-64*ddx2
  131.  
  132.                 mov [I], cx
  133.                 mov [J], di
  134. endm
  135.  
  136. MakePic         macro
  137.                 local @@VLoop, @@HLoop, @@Kitolto, @@Kell, @@nemgonosz
  138.                 mov edi, pic2
  139.                 mov si, [I]
  140.                 mov ebp, 100
  141.                 xor ebx, ebx
  142.          @@VLoop:
  143.                 mov ax, si
  144.                 mov dx, [J]
  145.                 mov cx, 160
  146.          @@HLoop:
  147.                 add ax, [DDX1]
  148.                 add dx, [DDY1]
  149.                 mov bl, ah
  150.                 mov bh, dh
  151.  
  152.                 push ebp
  153.                 mov ebp,pic1
  154.                 mov bl, [byte ptr ebp+ebx]
  155.                 pop ebp
  156. IF Kell? EQ 1
  157.                 cmp bl, [Filler]
  158.                 je @@Kitolto
  159. ENDIF
  160.                 cmp bl,SzinMelyseg
  161.                 jae @@nemgonosz
  162.                 mov bl,SzinMelyseg
  163. @@nemgonosz:
  164.                 sub bl,SzinMelyseg
  165.                 mov bh,bl
  166.                 mov [edi], bx
  167.                 mov [edi+320], bx
  168. @@Kitolto:
  169.                 inc edi
  170.                 inc edi
  171.                 dec cx
  172.                 jnz @@HLoop
  173.                 mov dx, [DDY2]
  174.                 add si, [DDX2]
  175.                 add edi, 320
  176.                 add [J], dx
  177.                 dec ebp
  178.                 jnz @@VLoop             ; Eddig
  179. endm               
  180.                 public Effect1Init
  181. Effect1Init:
  182.                 pushad
  183.                 mov [Rot1], 0*PageRot
  184.                 mov [Dist1], DefDist-0*PageDist
  185.                 mov [Rot2], 1*PageRot
  186.                 mov [Dist2], DefDist-1*PageDist
  187.                 mov [Rot3], 2*PageRot
  188.                 mov [Dist3],DefDist-2*PageDist
  189.                 mov [Rot4], 3*PageRot
  190.                 mov [Dist4], DefDist-3*PageDist
  191.                 mov [Rot5], 4*PageRot
  192.                 mov [Dist5], DefDist-4*PageDist
  193.                 mov [FramesCount], FramesNum
  194.                 popad
  195.                 ret
  196.  
  197.                 public Effect1
  198. Effect1:
  199.                 pushad
  200. Kell? = 0
  201.                 mov     SzinMelyseg,180
  202.                 MakeMath [Rot1], [Dist1]
  203.                 MakePic
  204. Kell? = 1
  205.                 mov     SzinMelyseg,140
  206.                 MakeMath [Rot2], [Dist2]
  207.                 MakePic
  208.                 mov     SzinMelyseg,90
  209.                 MakeMath [Rot3], [Dist3]
  210.                 MakePic
  211.                 mov     SzinMelyseg,50
  212.                 MakeMath [Rot4], [Dist4]
  213.                 MakePic
  214.                 mov     SzinMelyseg,0
  215.                 MakeMath [Rot5], [Dist5]
  216.                 MakePic
  217. ;                add [Origo_Y], 128
  218.                 add [Rot1], DeltaRot
  219.                 sub [Dist1], DeltaDist
  220.                 add [Rot2], DeltaRot
  221.                 sub [Dist2], DeltaDist
  222.                 add [Rot3], DeltaRot
  223.                 sub [Dist3], DeltaDist
  224.                 add [Rot4], DeltaRot
  225.                 sub [Dist4], DeltaDist
  226.                 add [Rot5], DeltaRot
  227.                 sub [Dist5], DeltaDist
  228.                 dec [FramesCount]
  229.                 jnz @@NonDefault
  230.                 ror [dword ptr Rot5], 8 ; Rot-ok csereje
  231.                 mov al, [Rot1]
  232.                 mov [Rot2], al
  233.                 ;Random
  234.                 ;mov [Rot1], al
  235. ;                add [Rot1],16
  236.                 mov [Dist1], DefDist-0*PageDist
  237.                 mov [Dist2], DefDist-1*PageDist
  238.                 mov [Dist3], DefDist-2*PageDist
  239.                 mov [Dist4], DefDist-3*PageDist
  240.                 mov [Dist5], DefDist-4*PageDist
  241.                 mov [FramesCount], FramesNum
  242.         @@NonDefault:
  243.                 popad
  244.                 ret
  245. Sinus1:
  246.                 dw 0, 6, 13, 19, 25, 31, 38, 44, 50
  247.                 dw 56, 62, 68, 74, 80, 86, 92, 98
  248.                 dw 104, 109, 115, 121, 126, 132, 137, 142
  249.                 dw 147, 152, 157, 162, 167, 172, 177, 181
  250.                 dw 185, 190, 194, 198, 202, 206, 209, 213
  251.                 dw 216, 220, 223, 226, 229, 231, 234, 237
  252.                 dw 239, 241, 243, 245, 247, 248, 250, 251
  253.                 dw 252, 253, 254, 255, 255, 256, 256, 256
  254.                 dw 256, 256, 255, 255, 254, 253, 252, 251
  255.                 dw 250, 248, 247, 245, 243, 241, 239, 237
  256.                 dw 234, 231, 229, 226, 223, 220, 216, 213
  257.                 dw 209, 206, 202, 198, 194, 190, 185, 181
  258.                 dw 177, 172, 167, 162, 157, 152, 147, 142
  259.                 dw 137, 132, 126, 121, 115, 109, 104, 98
  260.                 dw 92, 86, 80, 74, 68, 62, 56, 50
  261.                 dw 44, 38, 31, 25, 19, 13, 6, 0
  262.                 dw -6, -13, -19, -25, -31, -38, -44, -50
  263.                 dw -56, -62, -68, -74, -80, -86, -92, -98
  264.                 dw -104, -109, -115, -121, -126, -132, -137, -142
  265.                 dw -147, -152, -157, -162, -167, -172, -177, -181
  266.                 dw -185, -190, -194, -198, -202, -206, -209, -213
  267.                 dw -216, -220, -223, -226, -229, -231, -234, -237
  268.                 dw -239, -241, -243, -245, -247, -248, -250, -251
  269.                 dw -252, -253, -254, -255, -255, -256, -256, -256
  270.                 dw -256, -256, -255, -255, -254, -253, -252, -251
  271.                 dw -250, -248, -247, -245, -243, -241, -239, -237
  272.                 dw -234, -231, -229, -226, -223, -220, -216, -213
  273.                 dw -209, -206, -202, -198, -194, -190, -185, -181
  274.                 dw -177, -172, -167, -162, -157, -152, -147, -142
  275.                 dw -137, -132, -126, -121, -115, -109, -104, -98
  276.                 dw -92, -86, -80, -74, -68, -62, -56, -50
  277.                 dw -44, -38, -31, -25, -19, -13, -6
  278.  
  279. Cosinus1:
  280.                 dw 256, 256, 256, 255, 255, 254, 253, 252, 251
  281.                 dw 250, 248, 247, 245, 243, 241, 239, 237
  282.                 dw 234, 231, 229, 226, 223, 220, 216, 213
  283.                 dw 209, 206, 202, 198, 194, 190, 185, 181
  284.                 dw 177, 172, 167, 162, 157, 152, 147, 142
  285.                 dw 137, 132, 126, 121, 115, 109, 104, 98
  286.                 dw 92, 86, 80, 74, 68, 62, 56, 50
  287.                 dw 44, 38, 31, 25, 19, 13, 6, 0
  288.                 dw -6, -13, -19, -25, -31, -38, -44, -50
  289.                 dw -56, -62, -68, -74, -80, -86, -92, -98
  290.                 dw -104, -109, -115, -121, -126, -132, -137, -142
  291.                 dw -147, -152, -157, -162, -167, -172, -177, -181
  292.                 dw -185, -190, -194, -198, -202, -206, -209, -213
  293.                 dw -216, -220, -223, -226, -229, -231, -234, -237
  294.                 dw -239, -241, -243, -245, -247, -248, -250, -251
  295.                 dw -252, -253, -254, -255, -255, -256, -256, -256
  296.                 dw -256, -256, -255, -255, -254, -253, -252, -251
  297.                 dw -250, -248, -247, -245, -243, -241, -239, -237
  298.                 dw -234, -231, -229, -226, -223, -220, -216, -213
  299.                 dw -209, -206, -202, -198, -194, -190, -185, -181
  300.                 dw -177, -172, -167, -162, -157, -152, -147, -142
  301.                 dw -137, -132, -126, -121, -115, -109, -104, -98
  302.                 dw -92, -86, -80, -74, -68, -62, -56, -50
  303.                 dw -44, -38, -31, -25, -19, -13, -6, 0
  304.                 dw 6, 13, 19, 25, 31, 38, 44, 50
  305.                 dw 56, 62, 68, 74, 80, 86, 92, 98
  306.                 dw 104, 109, 115, 121, 126, 132, 137, 142
  307.                 dw 147, 152, 157, 162, 167, 172, 177, 181
  308.                 dw 185, 190, 194, 198, 202, 206, 209, 213
  309.                 dw 216, 220, 223, 226, 229, 231, 234, 237
  310.                 dw 239, 241, 243, 245, 247, 248, 250, 251
  311.                 dw 252, 253, 254, 255, 255, 256, 256
  312.  
  313. Sinus2:
  314.                 dw 307, 307, 307, 306, 306, 305, 304, 303, 301
  315.                 dw 300, 298, 296, 294, 292, 289, 287, 284
  316.                 dw 281, 278, 274, 271, 267, 263, 260, 255
  317.                 dw 251, 247, 242, 237, 233, 228, 222, 217
  318.                 dw 212, 206, 201, 195, 189, 183, 177, 171
  319.                 dw 164, 158, 151, 145, 138, 131, 124, 118
  320.                 dw 111, 103, 96, 89, 82, 75, 67, 60
  321.                 dw 53, 45, 38, 30, 23, 15, 8, 0
  322.                 dw -8, -15, -23, -30, -38, -45, -53, -60
  323.                 dw -67, -75, -82, -89, -96, -103, -111, -118
  324.                 dw -124, -131, -138, -145, -151, -158, -164, -171
  325.                 dw -177, -183, -189, -195, -201, -206, -212, -217
  326.                 dw -222, -228, -233, -237, -242, -247, -251, -255
  327.                 dw -260, -263, -267, -271, -274, -278, -281, -284
  328.                 dw -287, -289, -292, -294, -296, -298, -300, -301
  329.                 dw -303, -304, -305, -306, -306, -307, -307, -307
  330.                 dw -307, -307, -306, -306, -305, -304, -303, -301
  331.                 dw -300, -298, -296, -294, -292, -289, -287, -284
  332.                 dw -281, -278, -274, -271, -267, -263, -260, -255
  333.                 dw -251, -247, -242, -237, -233, -228, -222, -217
  334.                 dw -212, -206, -201, -195, -189, -183, -177, -171
  335.                 dw -164, -158, -151, -145, -138, -131, -124, -118
  336.                 dw -111, -103, -96, -89, -82, -75, -67, -60
  337.                 dw -53, -45, -38, -30, -23, -15, -8, 0
  338.                 dw 8, 15, 23, 30, 38, 45, 53, 60
  339.                 dw 67, 75, 82, 89, 96, 103, 111, 118
  340.                 dw 124, 131, 138, 145, 151, 158, 164, 171
  341.                 dw 177, 183, 189, 195, 201, 206, 212, 217
  342.                 dw 222, 228, 233, 237, 242, 247, 251, 255
  343.                 dw 260, 263, 267, 271, 274, 278, 281, 284
  344.                 dw 287, 289, 292, 294, 296, 298, 300, 301
  345.                 dw 303, 304, 305, 306, 306, 307, 307
  346.  
  347. Cosinus2:
  348.                 dw 0, -8, -15, -23, -30, -38, -45, -53, -60
  349.                 dw -67, -75, -82, -89, -96, -103, -111, -118
  350.                 dw -124, -131, -138, -145, -151, -158, -164, -171
  351.                 dw -177, -183, -189, -195, -201, -206, -212, -217
  352.                 dw -222, -228, -233, -237, -242, -247, -251, -255
  353.                 dw -260, -263, -267, -271, -274, -278, -281, -284
  354.                 dw -287, -289, -292, -294, -296, -298, -300, -301
  355.                 dw -303, -304, -305, -306, -306, -307, -307, -307
  356.                 dw -307, -307, -306, -306, -305, -304, -303, -301
  357.                 dw -300, -298, -296, -294, -292, -289, -287, -284
  358.                 dw -281, -278, -274, -271, -267, -263, -260, -255
  359.                 dw -251, -247, -242, -237, -233, -228, -222, -217
  360.                 dw -212, -206, -201, -195, -189, -183, -177, -171
  361.                 dw -164, -158, -151, -145, -138, -131, -124, -118
  362.                 dw -111, -103, -96, -89, -82, -75, -67, -60
  363.                 dw -53, -45, -38, -30, -23, -15, -8, 0
  364.                 dw 8, 15, 23, 30, 38, 45, 53, 60
  365.                 dw 67, 75, 82, 89, 96, 103, 111, 118
  366.                 dw 124, 131, 138, 145, 151, 158, 164, 171
  367.                 dw 177, 183, 189, 195, 201, 206, 212, 217
  368.                 dw 222, 228, 233, 237, 242, 247, 251, 255
  369.                 dw 260, 263, 267, 271, 274, 278, 281, 284
  370.                 dw 287, 289, 292, 294, 296, 298, 300, 301
  371.                 dw 303, 304, 305, 306, 306, 307, 307, 307
  372.                 dw 307, 307, 306, 306, 305, 304, 303, 301
  373.                 dw 300, 298, 296, 294, 292, 289, 287, 284
  374.                 dw 281, 278, 274, 271, 267, 263, 260, 255
  375.                 dw 251, 247, 242, 237, 233, 228, 222, 217
  376.                 dw 212, 206, 201, 195, 189, 183, 177, 171
  377.                 dw 164, 158, 151, 145, 138, 131, 124, 118
  378.                 dw 111, 103, 96, 89, 82, 75, 67, 60
  379.                 dw 53, 45, 38, 30, 23, 15, 8
  380.  
  381.                 end
  382.